package mqigdcom.mqigd.db;

import org.json.JSONArray;

import java.util.List;

/**
 * MQI的数据库访问接口类
 */
public interface IMQIDao {
    /**
     * 释放各个对象
     */
    void release();

    /**
     * 清除指定用户下所有的公路信息
     *
     * @param userid 用户id
     */
    void clearAllRoadList(String userid);

    /**
     * 批量更新指定用户下所有的公路信息集合
     *
     * @param userid   用户id
     * @param roadList 返回json数组格式的字符串
     */
    void updateAllRoadList(String userid, JSONArray roadList);

    /**
     * 获取指定用户下所有的公路信息
     *
     * @param userid        用户id
     * @param needAllFields 是否需要全部字段
     * @param needUnitList  是否需要单元列表
     * @return 返回json数组格式的字符串
     */
    String getAllRoadList(String userid, boolean needAllFields, boolean needUnitList);

    /**
     * 判断指定用户的数据是否为空
     *
     * @param userid 用户id
     * @return
     */
    boolean isEmpty(String userid);

    /**
     * 更新或者新增路况信息
     *
     * @param roadCondition 路况信息
     */
    void updateOrCreateRoadCondition(RoadCondition roadCondition);

    /**
     * 获取所有需要上传的路况信息
     *
     * @return 返回路况信息集合
     */
    List<RoadCondition> getNeedUploadRoadConditions();

    /**
     * 获取公路下某单元下的路况信息
     *
     * @param userid   用户Id
     * @param road_id  公路Id
     * @param unit_id  单元Id
     * @param line_dir 调查方向
     * @param type     采集分类
     * @return 返回json数组格式的字符串
     */
    String getRoadConditionsById(String userid, String road_id, String unit_id, String line_dir, String type);

    /**
     * 更新路况信息的上传状态
     *
     * @param _id    路况的_id字段值
     * @param status 状态值  0 未上传；1 正在上传；
     */
    void updateRoadConditionUploadStatus(int _id, int status);

    /**
     * 删除一条路况信息
     *
     * @param _id 路况的_id字段值
     */
    void deleteRoadConditionById(int _id);
}
